// HJ89 24点运算
// https://www.nowcoder.com/practice/7e124483271e4c979a82eb2956544f9d
// 计算24点是一种扑克牌益智游戏，随机抽出4张扑克牌，通过加(+)，减(-)，乘(*),
// 除(/)四种运算法则计算得到整数24，
// 本问题中，扑克牌通过如下字符或者字符串表示，其中，小写joker表示小王，大写JOKER表示大王：
// 3 4 5 6 7 8 9 10 J Q K A 2 joker JOKER
// 本程序要求实现：输入4张牌，输出一个算式，算式的结果为24点。
// 1.运算只考虑加减乘除运算，没有阶乘等特殊运算符号，没有括号，友情提醒，整数除法要当心，
// 是属于整除，比如2/3=0，3/2=1；
// 2.牌面2~10对应的权值为2~10, J、Q、K、A权值分别为为11、12、13、1；
// 3.输入4张牌为字符串形式，以一个空格隔开，首尾无空格；如果输入的4张牌中包含大小王，
// 则输出字符串“ERROR”，表示无法运算；
// 4.输出的算式格式为4张牌通过+-*/四个运算符相连，中间无空格，4张牌出现顺序任意，只要结果正确；
// 5.输出算式的运算顺序从左至右，不包含括号，如1+2+3*4的结果为24，2 A 9
// A不能变为(2+1)*(9-1)=24
// 6.如果存在多种算式都能计算得出24，只需输出一种即可，如果无法得出24，则输出“NONE”表示无解。
// 7.因为都是扑克牌，不存在单个牌为0的情况，且没有括号运算，除数(即分母)的数字不可能为0
// 数据范围：一行由4张牌组成的字符串
// 输入4张牌为字符串形式，以一个空格隔开，首尾无空格；
// 输出怎么运算得到24，如果无法得出24，则输出“NONE”表示无解，
// 如果输入的4张牌中包含大小王，则输出字符串“ERROR”，表示无法运算；
// 输入：A A A A
// 输出：NONE
// 不能实现
// 输入：4 2 K A
// 输出：K-A*4/2
// A+K*2-4也是一种答案，输出任意一种即可
// 输入：B 5 joker 4
// 输出：ERROR
// 存在joker，输出ERROR
// 输入：K Q 6 K
// 输出：NONE
// 按一般的计算规则来看，K+K-(Q/6)=24 或
// K-((Q/6)-K)=24，但是因为这个题目的运算不许有括号， 所以去掉括号后变为
// K+K-Q/6=26-Q/6=14/6=2 或 K-Q/6-K=1/6-K=0-K=-13，
// 其它情况也不能运算出24点，故不存在，输出NONE
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#include <string>
char face[14][4] = {"0", "A", "2", "3",  "4", "5", "6",
                    "7", "8", "9", "10", "J", "Q", "K"};
char sign[3];
char signals[4] = {'+', '-', '*', '/'};
int n = 0;
char cal(int a[4]) {
  float out;
  int i, j, k, m;
  for (i = 0; i < 4; i++) {
    sign[0] = i;
    for (j = 0; j < 4; j++) {
      sign[1] = j;
      for (k = 0; k < 4; k++) {
        sign[2] = k;
        out = a[0];
        for (m = 0; m < 3; m++) {
          if (sign[m] == 2)
            out *= a[m + 1];
          else if (sign[m] == 3)
            out /= a[m + 1];
          else if (sign[m] == 1)
            out -= a[m + 1];
          else
            out += a[m + 1];
        }
        if (out - 24 < 0.01 && out - 24 > -0.01) {
          printf("%s%c%s%c%s%c%s\n", face[a[0]], signals[sign[0]], face[a[1]],
                 signals[sign[1]], face[a[2]], signals[sign[2]], face[a[3]]);
          return 1;
        }
      }
    }
  }
  return 0;
}
int find_24(int a[], int k, int m) {
  int i;
  if (k > m) {
    if (cal(a)) return 1;
    n++;
  } else {
    for (i = k; i <= m; i++) {
      std::swap(a[k], a[i]);
      if (find_24(a, k + 1, m)) return 1;
      std::swap(a[k], a[i]);
    }
  }
  return 0;
}
int main() {
  int card[100];
  card['A' - '1'] = 1;
  card[1] = 2;
  card[2] = 3;
  card[3] = 4;
  card[4] = 5;
  card[5] = 6;
  card[6] = 7;
  card[7] = 8;
  card[8] = 9;
  card['1' - '1'] = 10;
  card['J' - '1'] = 11;
  card['Q' - '1'] = 12;
  card['K' - '1'] = 13;
  char A[6], B[6], C[6], D[6];
  while (scanf("%s %s %s %s", A, B, C, D) != EOF) {
    int a[4];
    if (strlen(A) > 2 || strlen(B) > 2 || strlen(C) > 2 || strlen(D) > 2)
      printf("ERROR\n");
    else {
      a[0] = card[A[0] - '1'];
      a[1] = card[B[0] - '1'];
      a[2] = card[C[0] - '1'];
      a[3] = card[D[0] - '1'];
      char flag[4] = {0};
      if (find_24(a, 0, 3))
        ;
      else
        printf("NONE\n");
    }
    // printf("\n");
  }
  // return 0;
}